package com.spdd.mt.biz.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 充值订单表
 * </p>
 *
 * @author shanfeilong
 * @since 2025-04-02
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("充值订单表")
public class MtRechargeOrderVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 主键 */
    @ApiModelProperty("主键")
    private Long id;

    /** 美团商⼾编码 */
    @ApiModelProperty("美团商⼾编码")
    private String merchNo;

    /** 美团电商平台交易单号 */
    @ApiModelProperty("美团电商平台交易单号")
    private String mtOrderNo;

    /** ⼿机号 */
    @ApiModelProperty("⼿机号")
    private String account;

    /** 商品编码 */
    @ApiModelProperty("商品编码")
    private String productCode;

    /** 商品类型 ProductTypeEnum */
    @ApiModelProperty("商品类型 ProductTypeEnum")
    private Integer productType;

    /** 时间戳 */
    @ApiModelProperty("时间戳")
    private String timestamp;

    /** 回调地址 */
    @ApiModelProperty("回调地址")
    private String notifyUrl;

    /** 平台业务订单号 */
    @ApiModelProperty("平台业务订单号")
    private String orderNo;

    /** 供应商(SPDD)订单号 */
    @ApiModelProperty("供应商(SPDD)订单号")
    private String supplierOrderNo;

    /** 面额 */
    @ApiModelProperty("面额")
    private Integer facePrice;

    /** 运营商编码 */
    @ApiModelProperty("运营商编码")
    private String operator;

    /** 省份编码 */
    @ApiModelProperty("省份编码")
    private String provinceCode;

    /** 省份名称 */
    @ApiModelProperty("省份名称")
    private String provinceName;

    /** 购买数量 */
    @ApiModelProperty("购买数量")
    private Integer buyNum;

    /** 供应商编码 */
    @ApiModelProperty("供应商编码")
    private String supplierCode;

    /** 结算⾦额 */
    @ApiModelProperty("结算⾦额")
    private String contractPrice;

    /** 供应商结算金额 */
    @ApiModelProperty("供应商结算金额")
    private String supplierContractPrice;

    /** 订单状态 */
    @ApiModelProperty("订单状态")
    private Integer orderStatus;

    /** 交易月份 */
    @ApiModelProperty("交易月份")
    private String tradeMonth;

    /** 交易日期 */
    @ApiModelProperty("交易日期")
    private String tradeDate;

    /** 完成日期 */
    @ApiModelProperty("完成日期")
    private String finishDate;

    /** 充值开始时间 */
    @ApiModelProperty("充值开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    /** 完成时间 */
    @ApiModelProperty("完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date finishTime;

    /** 成功时间 */
    @ApiModelProperty("成功时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date successTime;

    /** 原运营商编码 */
    @ApiModelProperty("原运营商编码")
    private String originOperator;

    /** 现运营商编码 */
    @ApiModelProperty("现运营商编码")
    private String currentOperator;

    /** 供应商返回码 */
    @ApiModelProperty("供应商返回码")
    private String supplierReturnCode;

    /** 供应商返回信息 */
    @ApiModelProperty("供应商返回信息")
    private String supplierReturnMessage;

    /** 返回码 */
    @ApiModelProperty("返回码")
    private String returnCode;

    /** 返回状态 success fail processing */
    @ApiModelProperty("返回状态 success fail processing")
    private String returnStatus;

    /** 返回信息 */
    @ApiModelProperty("返回信息")
    private String returnMessage;

    /** 供应商回调返回码 */
    @ApiModelProperty("供应商回调返回码")
    private String notifyReturnCode;

    /** 供应商回调返回信息 */
    @ApiModelProperty("供应商回调返回信息")
    private String notifyReturnMessage;

    /** 通知状态:0-待通知 1-通知成功 2-通知失败 */
    @ApiModelProperty("通知状态:0-待通知 1-通知成功 2-通知失败")
    private Integer notifyStatus;

    /** 通知次数 */
    @ApiModelProperty("通知次数")
    private Integer notifyTimes;

    /** 最近一次通知时间 */
    @ApiModelProperty("最近一次通知时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastNotifyTime;

    /** 重发状态:0-无需重发 1-待重发 2-重发成功 */
    @ApiModelProperty("重发状态:0-无需重发 1-待重发 2-重发成功")
    private Integer reorderStatus;

    /** 重发次数 */
    @ApiModelProperty("重发次数")
    private Integer reorderTimes;

    /** 最近一次重发时间 */
    @ApiModelProperty("最近一次重发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastReorderTime;

    /** 创建时间 */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /** 更新时间 */
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

}